package itsm.isperp.framework.service;

import itsm.isperp.framework.domain.IUser;

import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.AuthenticationException;

/**
 * 框架服务接口类,通过该接口中定义的方法可以轻松实现根据客户需求实现登录、用户、部门信息自定义
 */
public interface IFrameworkService {

	/**
	 * 用户登录验证方法
	 * 
	 * @param token
	 *            框架封装听登录信息对象，其中包括用户名、密码以及当前请求的Request、Response对象
	 * @param user
	 *            当前登录用户名对应的User对象，该User对象是根据登录提供的用户名，
	 *            调用UserService的findUserByUsername方法得到的
	 * @throws AuthenticationException
	 *             认证异常
	 */
	void authentication(UsernamePasswordAuthenticationToken token, IUser user)
			throws AuthenticationException;

	// /**
	// * 根据用户名，找到对应的User对象
	// *
	// * @param username
	// * 给出的用户名
	// * @return User 对象
	// */
	// IUser findUserByUsername(String username);
	//
	// /**
	// * 根据部门ID，取得部门信息
	// *
	// * @param id
	// * 部门Id
	// * @return IDepartment 返回的部门对象
	// */
	// IDepartment findDeptById(String id);
	//
	// /**
	// * 根据用户名，找到该用户所在的部门，因为部门可以有多个，所以这里集合返回
	// *
	// * @param username
	// * 用户名
	// * @return 给定用户的部门集合
	// */
	// List<IDepartment> findDeptsByUsername(String username);
	//
	// /**
	// * 查询所有部门信息
	// */
	// List<IDepartment> findAllDepts();
	//
	// /**
	// * 查询所有人员信息
	// */
	// List<IUser> findAllUsers();
	//
	// /**
	// * 根据指定的父部门ID，找到所有隶属于该部门下的子部门
	// *
	// * @param parentDeptId
	// * 父部门ID
	// * @return 子部门集合
	// */
	// List<IDepartment> findChildDepts(String parentDeptId);
	//
	// /**
	// * 根据部门属性信息查询部门
	// *
	// * @param deptInfo
	// * @return 部门集合
	// */
	// List<IDepartment> findDeptsByDeptInfo(IDepartment deptInfo);
	//
	// /**
	// * 根据用户传递的部门id 查询用户集合
	// *
	// * @param deptId
	// * 部门id
	// * @return 返回的用户集合
	// */
	// List<IUser> findUsersByDeptId(String deptId);
	//
	// /**
	// * 根据用户传递的userInfo查询用户集合 如果传递的参数为空，则查询所有用户
	// *
	// * @param userInfo
	// * @return 返回的用户集合
	// */
	// List<IUser> findUsersByUserInfo(IUser userInfo);
	//
	// /**
	// * @param deptId
	// * 部门Id
	// * @param cname
	// * 中文名
	// * @return 返回的用户集合
	// */
	// List<IUser> findUsersByDeptIdAndUsercname(String deptId, String cname);
	//
	// /**
	// * 根据职位返回一个相符的用户列表
	// *
	// * @param positionId
	// * 所在岗位ID
	// * @return 相符合的用户列表
	// */
	// List<IUser> findUsersByPostion(String positionId);
	//
	// /**
	// * @return 返回查询到的所有岗位信息
	// */
	// List<IPosition> findAllPositions();
	//
	// /**
	// * 根据岗位ID，返回一个具体的岗位信息
	// *
	// * @param id
	// * 根据岗位ID
	// * @return 返回岗位对象
	// */
	// IPosition findPositionById(String id);

}
